ci: release - #2625
Conversation
Scope checkThis PR touches 36 files. PRs with a broad scope are harder to review. Please confirm the scope hasn't drifted beyond the intended change. If this scope is intentional, no action needed. A maintainer will review it. If not, please consider splitting this into smaller PRs. See CONTRIBUTING.md for contribution guidelines. |
Deploying with
|
| Status | Name | Latest Commit | Updated (UTC) |
|---|---|---|---|
| ✅ Deployment successful! View logs |
emdash-demo-cache | 9697beb | Aug 27 2026, 11:43 AM |
@emdash-cms/admin
@emdash-cms/auth
@emdash-cms/auth-atproto
@emdash-cms/blocks
@emdash-cms/cloudflare
@emdash-cms/contentful-to-portable-text
emdash
create-emdash
@emdash-cms/gutenberg-to-portable-text
@emdash-cms/plugin-cli
@emdash-cms/plugin-types
@emdash-cms/registry-client
@emdash-cms/registry-lexicons
@emdash-cms/registry-moderation
@emdash-cms/registry-verification
@emdash-cms/sandbox-workerd
@emdash-cms/x402
@emdash-cms/plugin-ai-moderation
@emdash-cms/plugin-atproto
@emdash-cms/plugin-audit-log
@emdash-cms/plugin-color
@emdash-cms/plugin-embeds
@emdash-cms/plugin-field-kit
@emdash-cms/plugin-forms
@emdash-cms/plugin-webhook-notifier
commit: |
39c685a to
b51ef19
Compare
Deploying with
|
| Status | Name | Latest Commit | Updated (UTC) |
|---|---|---|---|
| ✅ Deployment successful! View logs |
emdash-demo-do | 9697beb | Aug 27 2026, 11:43 AM |
7cdf1f4 to
1ab8840
Compare
2b43c08 to
80b990d
Compare
Overlapping PRsThis PR modifies files that are also changed by other open PRs:
This may cause merge conflicts or duplicated work. A maintainer will coordinate. |
80b990d to
5ad60e2
Compare
81a4e28 to
199964a
Compare
d3bbe40 to
e3e1918
Compare
918c7fb to
a905a35
Compare
a905a35 to
68b1cf1
Compare
This PR was opened by the Changesets release GitHub action. When you're ready to do a release, you can merge this and the packages will be published to npm automatically. If you're not ready to do a release yet, that's fine, whenever you add more changesets to main, this PR will be updated.
Releases
@emdash-cms/admin@0.36.0
Minor Changes
#2582
8d8d3deThanks @khoinguyenpham04! - Adds numbered page navigation and page-size controls to the local Media Library. Media list requests can opt into numbered pages withpageand receive an exacttotalCount; cursor pagination remains the default.MediaLibraryaccepts controlled numbered pagination throughpagination. ExistinghasMoreandonLoadMoreprops remain supported whenpaginationis omitted.#2622
089d747Thanks @khoinguyenpham04! - Adds Lua and Zig to code block language selectors in the admin and inline visual editors. Lua code is syntax highlighted, while Zig uses the existing plain-text fallback.#2624
436f63dThanks @khoinguyenpham04! - Adds focal points for local images so cover-cropped thumbnails, galleries, and image components keep the selected subject visible.#2586
815553cThanks @khoinguyenpham04! - Adds flat-folder organization to the local Media Library. Editors can create, rename, and delete folders. Authors can organize their own local media, and editors can organize any local media, through Media Details or by dragging a media card or row onto a visible folder.Uploads continue to enter the Main library. Deleting a folder returns its media to the Main library without deleting files or changing their URLs.
#2538
9c52b39Thanks @khoinguyenpham04! - Adds a media usage tracking setting. Tracking is enabled during initial setup. Existing sites enable it from Settings, keep the page open while EmDash scans existing content, and can return later to continue from saved progress.#2470
f527127Thanks @khoinguyenpham04! - Adds a coverage-aware Used in section to local media details.#2647
e3ad082Thanks @ascorbic! - Adds signed-label policy and listing-status support to the plugin registry client. Registry requests use the aggregator's required listing policy with an optional accepted-labeler declaration, and withdrawn releases are excluded from install and update results.The EmDash admin waits for a fresh listing-policy response before rendering registry metadata, uses the approved author name or publisher DID instead of a mutable handle, and does not request media for an unapproved release. Install, update, and media-proxy checks enforce listing withdrawal independently from the existing plugin-code and capability checks.
Registry artifact downloads and proxied media connect only to the public IP addresses validated for each URL, preventing DNS changes between validation and connection from reaching private services.
Patch Changes
#2590
724241fThanks @khoinguyenpham04! - Adds a resizable settings panel to the desktop content editor, including keyboard controls and bounded widths.#2468
72664adThanks @khoinguyenpham04! - Fixes vertical alignment of editor sidebar drag handles with standard and collapsible section headings.#2683
3e90689Thanks @hossein-webdev! - Fixes AVIF images being rejected with "File type not allowed" on upload.image/avifis back in the default media allowlist alongside PNG, JPEG, GIF, and WebP, so editors can upload.aviffiles again from the media library and from image fields that use the default allowlist.The admin file picker now offers
.aviffiles and renders their thumbnails, the built-in "Images" preset in a field's allowed-types editor includes AVIF, and.avifworks as extension shorthand in a field'sallowedMimeTypes.SVG stays excluded from the default allowlist.
#2606
22c4422Thanks @khoinguyenpham04! - Fixes code blocks in the admin and inline visual editors with syntax highlighting for supported languages and readable, borderless styling in light and dark appearances.#2610
2ffda17Thanks @MatsudaTsunenori! - Completes the Japanese admin translation so Japanese-speaking users see localized text for every catalog message.#2686
42fa5d8Thanks @MatsudaTsunenori! - Fixes translated admin guidance and WordPress import summaries so links, emphasized text, dynamic values, and plural counts can follow each locale's word order. Clarifies the content type empty-state action.#2754
70c487cThanks @khoinguyenpham04! - Updates the content editor's byline controls with a focused search-and-create flow, clear automatic owner credits, accessible ordering and roles, and actions that distinguish post credits from reusable byline profiles.#2490
2b54096Thanks @khoinguyenpham04! - Fixes image action controls intermittently failing to appear when selecting an image in the editor.#2632
76dd3ebThanks @khoinguyenpham04! - Fixes implicit English locale guidance in the content editor by replacing the persistent warning with compact, accessible help.#2599
b383a67Thanks @khoinguyenpham04! - Fixes code blocks in the admin and inline visual editors so Tab and Shift+Tab indent and outdent code instead of moving focus.#2687
05b0a8bThanks @MatsudaTsunenori! - Fixes newly created taxonomies not appearing in the admin sidebar until the page is reloaded.#2548
1f2678bThanks @ahliweb! - Completes the Indonesian admin translations, covering the image gallery block, plugin MCP tool settings, byline filters, content locale settings, and scheduled publishing warnings.#2590
724241fThanks @khoinguyenpham04! - Updates the content editor's Move to Trash section to match the other settings surfaces and use a softer destructive button treatment.#2603
f5e18d8Thanks @khoinguyenpham04! - Adds one-click copy actions to code-block controls in the admin and inline visual editors, and polishes the layout so controls stay usable on narrow screens and in right-to-left locales.#2561
f9a488aThanks @khoinguyenpham04! - Refines admin table toolbars with consistent compact search and filters, including a calendar-based date range picker for content lists.#2629
52f7c91Thanks @emdashbot! - Fixes the Section editor so plugin-provided Portable Text blocks appear in the slash menu alongside core blocks, matching the content and widget editors.#2676
7571581Thanks @MatsudaTsunenori! - Fixes the vertical alignment of the Required and Translatable switches in the byline field editor when helper text appears below Translatable.#2468
72664adThanks @khoinguyenpham04! - Fixes the meta description field shifting after the first character is entered.#2463
f613a14Thanks @helio-cf! - Fixes media previews for streaming providers such as Cloudflare Stream. Video from these providers now shows its poster thumbnail in the media library grid and list, plays in the detail panel instead of stalling at 0:00, and reports the file size the provider supplies. Also exportsMediafromemdash/ui, so frontends can render provider-backed video and audio thatImagecannot.#2628
1c6b893Thanks @scottbuscemi! - Fixes line breaks entered in table cells disappearing from saved content.Updated dependencies [
6178888,e3ad082]:@emdash-cms/cloudflare@0.36.0
Minor Changes
#2538
9c52b39Thanks @khoinguyenpham04! - Removes scheduled media usage recovery. Media usage tracking now advances only while an administrator keeps its settings page visible. This breaks Cloudflare deployments that configuremediaUsageCronand Node.js integrations that provide a customCronScheduler.What should I do?
On Cloudflare, remove the dedicated media usage Cron Trigger and the
mediaUsageCronoption. Keep the general Cron Trigger unchanged; no replacement trigger is required.If you provide a custom Node.js scheduler, remove
setMediaUsageMaintenance(). A customCronSchedulernow implements onlystart(),stop(),reschedule(), andsetSystemCleanup().Keep Settings → Media usage tracking open until it shows Ready. If the page closes, return to continue from saved progress.
Patch Changes
#2463
f613a14Thanks @helio-cf! - Fixes media previews for streaming providers such as Cloudflare Stream. Video from these providers now shows its poster thumbnail in the media library grid and list, plays in the detail panel instead of stalling at 0:00, and reports the file size the provider supplies. Also exportsMediafromemdash/ui, so frontends can render provider-backed video and audio thatImagecannot.Updated dependencies [
3e90689,22c4422,8d8d3de,089d747,b383a67,f6da16b,9c52b39,0f225eb,2fde0f9,37c5010,a1ddcfb,b4c73ac,436f63d,815553c,9c52b39,f527127,f00174b,f5e18d8,9c52b39,628630a,e3ad082,abd1042,f00174b,f613a14]:emdash@0.36.0
Minor Changes
#2582
8d8d3deThanks @khoinguyenpham04! - Adds numbered page navigation and page-size controls to the local Media Library. Media list requests can opt into numbered pages withpageand receive an exacttotalCount; cursor pagination remains the default.MediaLibraryaccepts controlled numbered pagination throughpagination. ExistinghasMoreandonLoadMoreprops remain supported whenpaginationis omitted.#2622
089d747Thanks @khoinguyenpham04! - Adds Lua and Zig to code block language selectors in the admin and inline visual editors. Lua code is syntax highlighted, while Zig uses the existing plain-text fallback.#2584
a1ddcfbThanks @khoinguyenpham04! - Adds flat media folders to theemdashREST and typed client APIs. Existing media remains in theMain library after upgrade, so sites do not need to migrate media assignments.
072_media_folders.Use
GETorPOST /_emdash/api/media/foldersto list or create folders, andPUTorDELETE /_emdash/api/media/folders/:idto rename or delete them. Folder reads requiremedia:read; folder writes requiremedia:edit_any. Typed clients expose the correspondingmediaFolderList,mediaFolderCreate,mediaFolderUpdate, andmediaFolderDeletemethods.Media list requests can filter by a folder ID or use
folderId=unfiledfor the Main library.Media updates and
mediaSetFolderaccept a folder ID,null, orunfiled. Authors can assigntheir own media, while editors can assign any media.
Deleting a folder returns its media to the Main library without changing media IDs, storage keys,
URLs, or usage records.
#2480
b4c73acThanks @DavidPivert! -LiveSearchnow scopes its results to the locale of the page it is used on.Behaviour change. The component reads
Astro.currentLocaleand forwards it as thelocalequery parameter to/_emdash/api/searchand/_emdash/api/search/suggest, which both already filtered on it. Until now the component never sent one, so a translated site got every entry back once per language — a French visitor searching from a French page saw each result twice, the second one opening its English page. Sites withi18nconfigured that relied on searching across every locale will see fewer results than before.Two ways to opt out: pass an explicit
localeto search a different one, orlocale={null}to search across every locale, which is the previous behaviour.Sites without Astro's
i18nconfigured are unaffected:Astro.currentLocaleisundefinedthere, so nolocaleparameter is sent and the search still spans everything.#2624
436f63dThanks @khoinguyenpham04! - Adds focal points for local images so cover-cropped thumbnails, galleries, and image components keep the selected subject visible.#2586
815553cThanks @khoinguyenpham04! - Adds flat-folder organization to the local Media Library. Editors can create, rename, and delete folders. Authors can organize their own local media, and editors can organize any local media, through Media Details or by dragging a media card or row onto a visible folder.Uploads continue to enter the Main library. Deleting a folder returns its media to the Main library without deleting files or changing their URLs.
#2538
9c52b39Thanks @khoinguyenpham04! - Adds a media usage tracking setting. Tracking is enabled during initial setup. Existing sites enable it from Settings, keep the page open while EmDash scans existing content, and can return later to continue from saved progress.#2106
f00174bThanks @gruntlord5! - Updatessqlite()and the EmDash CLI to use Node.js's built-in SQLite driver. Node.js deployments can install and run EmDash without compiling or downloading thebetter-sqlite3native add-on. Existing SQLite database files andsqlite({ url })configuration continue to work.This release requires Node.js 22.16 or later. Check the installed version with
node --versionand upgrade Node.js before updating EmDash if it reports an earlier release.Node.js 22 prints its standard
ExperimentalWarning: SQLite is an experimental featuremessage when the SQLite adapter loads. Node.js 24 does not print this warning.If
better-sqlite3is listed in the site'spackage.jsononly for EmDash, remove that dependency after updating.#2538
9c52b39Thanks @khoinguyenpham04! - Removes scheduled media usage recovery. Media usage tracking now advances only while an administrator keeps its settings page visible. This breaks Cloudflare deployments that configuremediaUsageCronand Node.js integrations that provide a customCronScheduler.What should I do?
On Cloudflare, remove the dedicated media usage Cron Trigger and the
mediaUsageCronoption. Keep the general Cron Trigger unchanged; no replacement trigger is required.If you provide a custom Node.js scheduler, remove
setMediaUsageMaintenance(). A customCronSchedulernow implements onlystart(),stop(),reschedule(), andsetSystemCleanup().Keep Settings → Media usage tracking open until it shows Ready. If the page closes, return to continue from saved progress.
#2647
e3ad082Thanks @ascorbic! - Adds signed-label policy and listing-status support to the plugin registry client. Registry requests use the aggregator's required listing policy with an optional accepted-labeler declaration, and withdrawn releases are excluded from install and update results.The EmDash admin waits for a fresh listing-policy response before rendering registry metadata, uses the approved author name or publisher DID instead of a mutable handle, and does not request media for an unapproved release. Install, update, and media-proxy checks enforce listing withdrawal independently from the existing plugin-code and capability checks.
Registry artifact downloads and proxied media connect only to the public IP addresses validated for each URL, preventing DNS changes between validation and connection from reaching private services.
Patch Changes
#2683
3e90689Thanks @hossein-webdev! - Fixes AVIF images being rejected with "File type not allowed" on upload.image/avifis back in the default media allowlist alongside PNG, JPEG, GIF, and WebP, so editors can upload.aviffiles again from the media library and from image fields that use the default allowlist.The admin file picker now offers
.aviffiles and renders their thumbnails, the built-in "Images" preset in a field's allowed-types editor includes AVIF, and.avifworks as extension shorthand in a field'sallowedMimeTypes.SVG stays excluded from the default allowlist.
#2606
22c4422Thanks @khoinguyenpham04! - Fixes code blocks in the admin and inline visual editors with syntax highlighting for supported languages and readable, borderless styling in light and dark appearances.#2599
b383a67Thanks @khoinguyenpham04! - Fixes code blocks in the admin and inline visual editors so Tab and Shift+Tab indent and outdent code instead of moving focus.#2445
f6da16bThanks @khoinguyenpham04! - Adds a one-time, administrator-controlled process for enabling automatic media usage indexing in production.#2538
9c52b39Thanks @khoinguyenpham04! - Speeds up the initial scan when administrators turn on media usage tracking on Cloudflare Workers and Node.js.#2598
0f225ebThanks @Glacier-Luo! - Fixes session-authenticated CMS comment submissions so they retain the user identity and honor automatic approval settings.#2600
2fde0f9Thanks @khoinguyenpham04! - Fixes the Playground welcome dialog reappearing after it has been dismissed and the page is reloaded or Edit mode is toggled.#2556
37c5010Thanks @cherenkov! - Fixesemdash content createandcontent updatefailing with "Cannot construct a Request with a Request object that has already been used" when the stored access token has expired. Requests carrying a body are now retried correctly after the token is refreshed.#2470
f527127Thanks @khoinguyenpham04! - Adds a coverage-aware Used in section to local media details.#2603
f5e18d8Thanks @khoinguyenpham04! - Adds one-click copy actions to code-block controls in the admin and inline visual editors, and polishes the layout so controls stay usable on narrow screens and in right-to-left locales.#2612
628630aThanks @danielmlr! - Fixes SQLite and D1 sites where an interrupted upgrade left the byline credits table staged as_emdash_content_bylines_new, so pages, feeds and the admin reported no entries although the content was intact. The next migration run restores the table and the stored credits.#2472
abd1042Thanks @khoinguyenpham04! - Fixes seeded media references using a different ID from their media-library item and prepares Used in data for newly seeded development sites.#2106
f00174bThanks @gruntlord5! - Fixes boolean query parameters on SQLite, including boolean equality filters in the plugin storage API.#2463
f613a14Thanks @helio-cf! - Fixes media previews for streaming providers such as Cloudflare Stream. Video from these providers now shows its poster thumbnail in the media library grid and list, plays in the detail panel instead of stalling at 0:00, and reports the file size the provider supplies. Also exportsMediafromemdash/ui, so frontends can render provider-backed video and audio thatImagecannot.Updated dependencies [
724241f,72664ad,3e90689,22c4422,2ffda17,42fa5d8,8d8d3de,70c487c,2b54096,76dd3eb,089d747,b383a67,05b0a8b,1f2678b,724241f,436f63d,815553c,9c52b39,f527127,f5e18d8,f9a488a,e3ad082,52f7c91,7571581,72664ad,f613a14,1c6b893]:@emdash-cms/registry-client@0.4.0
Minor Changes
#2647
e3ad082Thanks @ascorbic! - Adds signed-label policy and listing-status support to the plugin registry client. Registry requests use the aggregator's required listing policy with an optional accepted-labeler declaration, and withdrawn releases are excluded from install and update results.The EmDash admin waits for a fresh listing-policy response before rendering registry metadata, uses the approved author name or publisher DID instead of a mutable handle, and does not request media for an unapproved release. Install, update, and media-proxy checks enforce listing withdrawal independently from the existing plugin-code and capability checks.
Registry artifact downloads and proxied media connect only to the public IP addresses validated for each URL, preventing DNS changes between validation and connection from reaching private services.
Patch Changes
6178888]:@emdash-cms/registry-lexicons@0.4.0
Minor Changes
#2644
6178888Thanks @ascorbic! - Adds shared, CID-bound plugin-listing moderation contracts for reducing signed AT Protocol labels and deciding which package-profile and release revisions are eligible for display.The registry Lexicons add experimental public assessment and policy queries. The contracts cover publisher-controlled listing metadata and displayed media; they do not assess plugin code.
@emdash-cms/registry-moderation@0.1.0
Minor Changes
#2644
6178888Thanks @ascorbic! - Adds shared, CID-bound plugin-listing moderation contracts for reducing signed AT Protocol labels and deciding which package-profile and release revisions are eligible for display.The registry Lexicons add experimental public assessment and policy queries. The contracts cover publisher-controlled listing metadata and displayed media; they do not assess plugin code.
@emdash-cms/auth-atproto@0.2.36
Patch Changes
@emdash-cms/plugin-cli@0.8.2
Patch Changes
6178888,e3ad082]:@emdash-cms/plugin-embeds@0.1.44
Patch Changes
@emdash-cms/registry-verification@0.1.1
Patch Changes
6178888]:@emdash-cms/sandbox-workerd@0.5.2
Patch Changes
3e90689,22c4422,8d8d3de,089d747,b383a67,f6da16b,9c52b39,0f225eb,2fde0f9,37c5010,a1ddcfb,b4c73ac,436f63d,815553c,9c52b39,f527127,f00174b,f5e18d8,9c52b39,628630a,e3ad082,abd1042,f00174b,f613a14]:@emdash-cms/auth@0.36.0
@emdash-cms/blocks@0.36.0
create-emdash@0.36.0
@emdash-cms/gutenberg-to-portable-text@0.36.0
@emdash-cms/x402@0.36.0
@emdash-cms/labeler@0.0.1
Patch Changes
6178888]:@emdash-cms/fixture-perf-site@0.0.39
Patch Changes
3e90689,22c4422,8d8d3de,089d747,b383a67,f6da16b,9c52b39,0f225eb,2fde0f9,37c5010,a1ddcfb,b4c73ac,436f63d,815553c,9c52b39,f527127,f00174b,f5e18d8,9c52b39,628630a,e3ad082,abd1042,f00174b,f613a14]:@emdash-cms/perf-demo-site@0.0.39
Patch Changes
3e90689,22c4422,8d8d3de,089d747,b383a67,f6da16b,9c52b39,0f225eb,2fde0f9,37c5010,a1ddcfb,b4c73ac,436f63d,815553c,9c52b39,f527127,f00174b,f5e18d8,9c52b39,628630a,e3ad082,abd1042,f00174b,f613a14]:@emdash-cms/cache-demo-site@0.0.39
Patch Changes
3e90689,22c4422,8d8d3de,089d747,b383a67,f6da16b,9c52b39,0f225eb,2fde0f9,37c5010,a1ddcfb,b4c73ac,436f63d,815553c,9c52b39,f527127,f00174b,f5e18d8,9c52b39,628630a,e3ad082,abd1042,f00174b,f613a14]:@emdash-cms/do-demo-site@0.0.39
Patch Changes
3e90689,22c4422,8d8d3de,089d747,b383a67,f6da16b,9c52b39,0f225eb,2fde0f9,37c5010,a1ddcfb,b4c73ac,436f63d,815553c,9c52b39,f527127,f00174b,f5e18d8,9c52b39,628630a,e3ad082,abd1042,f00174b,f613a14]:@emdash-cms/do-solo-demo-site@0.0.39
Patch Changes
3e90689,22c4422,8d8d3de,089d747,b383a67,f6da16b,9c52b39,0f225eb,2fde0f9,37c5010,a1ddcfb,b4c73ac,436f63d,815553c,9c52b39,f527127,f00174b,f5e18d8,9c52b39,628630a,e3ad082,abd1042,f00174b,f613a14]: